﻿using System;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Banesco.Entidades;
using Banesco.Logica;
using ProntoCompra.Logica;


namespace WebCliente.UserControls
{
    public partial class pcLogIn : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            ///Limpiar Session en cada nuevo inicio
            Session.RemoveAll();
            FilaOlvideClave.Visible = false;
            FilaMensajes.Visible = false;
            NoExisteUsuario.Visible = false;

            txtUsuario.Attributes.Add("OnKeyPress", "submitOnEnter(event)");
            txtClave.Attributes.Add("OnKeyPress", "submitOnEnter(event)");
        }

        protected void btnIngresar_Click(object sender, EventArgs e)
        {
            FilaMensajes.Visible = false;
            //Entidades.UsuarioComprador usuario = new Entidades.UsuarioComprador();

            string nombreDeUsuario = this.txtUsuario.Text;
            string contraseñaUsuario = this.txtClave.Text;

            //string contraseñadaEncriptada = LogicStudio.HashEncode.LogicStudioEncodeManager.EncriptarContraseña(contraseñaUsuario);
           
            BSBanesco BSB = new BSBanesco();
            bool retMensaje = false;
            retMensaje = BSB.UsuarioAutenticado("banescodesa", txtUsuario.Text, txtClave.Text);
            //retMensaje = BSB.UsuarioSistema_ValidarUsuario(nombreDeUsuario, contraseñadaEncriptada);

            if (retMensaje)
            {
                //string groups = adAuth.GetGroups();
                string groups = string.Empty;

                //Create the ticket, and add the groups.
                bool isCookiePersistent = false;
                FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1,
                          txtUsuario.Text, DateTime.Now, DateTime.Now.AddMinutes(60), isCookiePersistent, groups);

                //Encrypt the ticket.
                string encryptedTicket = FormsAuthentication.Encrypt(authTicket);

                //Create a cookie, and then add the encrypted ticket to the cookie as data.
                HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);

                if (true == isCookiePersistent)
                    authCookie.Expires = authTicket.Expiration;

                //Add the cookie to the outgoing cookies collection.
                Response.Cookies.Add(authCookie);

                //You can redirect now.
                Response.Redirect(FormsAuthentication.GetRedirectUrl(txtUsuario.Text, false));

                //Session[ConstantesComprador.SESSIONUSUARIO] = usuario;
                //FormsAuthentication.SetAuthCookie(Convert.ToString(usuario.IDUsuarioComprador), false);
                //FormsAuthentication.RedirectFromLoginPage(Convert.ToString(usuario.IDUsuarioComprador), false);
            }
            else
            {
                FilaMensajes.Visible = true;
                lblMsjError.Text = "Nombre de usuario o contraseña invalida";
                //lblMsjError.ToolTip = retMensaje.MensajeTecnico;
            }

            //if (int.TryParse(txtUsuario.Text, out IDUsuario))
            //{
            //    usuario.IDUsuarioComprador = IDUsuario;
            //}
            //else
            //{
            //    usuario.UserName = txtUsuario.Text;
            //}

            //usuario.Clave = txtClave.Text.Trim().ToUpper();
            //usuario.Equipo = string.Format("Host:{0} | IP:{1} | Browser:{2} | Agent:{3}", Request.UserHostName, Request.UserHostAddress, Request.Browser.Type, Request.UserAgent);
            //Entidades.Mensaje retMensaje = (new BSCompradoresSeguridad(usuario)).UsuarioCompradorporIDUsuarioComprador(ref usuario);
            //if (retMensaje.Status == Mensaje.EnumStatus.OK)
            //{
            //    FormsAuthentication.Initialize();
            //    Session[ConstantesComprador.SESSIONUSUARIO] = usuario;
            //    FormsAuthentication.SetAuthCookie(Convert.ToString(usuario.IDUsuarioComprador), false);
            //    FormsAuthentication.RedirectFromLoginPage(Convert.ToString(usuario.IDUsuarioComprador), false);
            //}
            //else
            //{
            //    FilaMensajes.Visible = true;
            //    lblMsjError.Text = BSCatalogos.TextoMensaje(usuario.dsCatalogos, retMensaje);
            //    lblMsjError.ToolTip = retMensaje.MensajeTecnico;
            //}
        }

        protected void lnkOlvideClave_Click(object sender, EventArgs e)
        {
            Random obj = new Random();
            int numero = obj.Next(100000, 999999);
            string nuevaContraseña = LogicStudio.HashEncode.LogicStudioEncodeManager.EncriptarContraseña(numero.ToString());
            string Correo, plantilla;
            Correo = "";
            bool correo_enviado = true;
            FilaOlvideClave.Visible = true;
            Mensaje retMensaje = new Mensaje();
            BSBanesco BSB = new BSBanesco();
            string nombreDeUsuario = this.txtUsuario.Text;

            DataSet dsDatos = new DataSet();
            UsuarioSistema objUsuarioCambioContraseña = new UsuarioSistema();

            try
            {
                retMensaje = BSB.UsuariosSistema_ObtenerInformacionDeUsuarioPorNombreUsuario(nombreDeUsuario, ref dsDatos);
                if (retMensaje.Status == Mensaje.EnumStatus.OK)
                {
                    if (dsDatos.Tables.Count > 0)
                        if (dsDatos.Tables[0].Rows.Count > 0)
                        {
                            objUsuarioCambioContraseña.IDUsuario = Convert.ToInt32(dsDatos.Tables[0].Rows[0]["IDUsuario"].ToString());
                            objUsuarioCambioContraseña.NombreCompleto = dsDatos.Tables[0].Rows[0]["Nombre"].ToString();
                            objUsuarioCambioContraseña.Contraseña = nuevaContraseña;
                            objUsuarioCambioContraseña.CorreoElectronico = dsDatos.Tables[0].Rows[0]["Email"].ToString();
                            objUsuarioCambioContraseña.IDUsuarioModificacion = 1;
                            objUsuarioCambioContraseña.FechaModificacion = DateTime.Now;
                            objUsuarioCambioContraseña.FechaModificacionContraseña = DateTime.Now;
                            retMensaje = new Mensaje();
                            retMensaje = BSB.UsuariosSistema_ActualizarContraseñaUsuario(objUsuarioCambioContraseña);

                            if (retMensaje.Status == Mensaje.EnumStatus.OK)
                            {
                                //ClaveEnviada.Visible = true;
                                FilaOlvideClave.Visible = false;
                                EnviarCorreoElectronico(objUsuarioCambioContraseña.NombreCompleto, objUsuarioCambioContraseña.NombreUsuario, objUsuarioCambioContraseña.CorreoElectronico, numero.ToString());
                            }
                            else
                            {
                                NoExisteUsuario.Visible = true;
                                FilaOlvideClave.Visible = false;
                            }
                        }
                }
            }
            catch (Exception ex)
            { }

            //Entidades.UsuarioComprador usuario = new Entidades.UsuarioComprador();
            //Entidades.Mensaje retMensaje;

            //int UserNumber;
            //if (int.TryParse(txtUsuario.Text, out UserNumber))
            //{
            //    retMensaje = (new BSCompradoresSeguridad(usuario)).BuscarCorreoporIDUsuarioComprador(UserNumber, numero.ToString(), ref Correo);
            //}
            //else
            //{
            //    retMensaje = (new BSCompradoresSeguridad(usuario)).BuscarCorreoporUserName(txtUsuario.Text, numero.ToString(), ref Correo);
            //}

            //if (retMensaje.Status == Mensaje.EnumStatus.OK)
            //{
            //    LogicMail correo = new LogicMail();
            //    plantilla = Resources.Template.VerificacionEmail.ToString();
            //    plantilla = plantilla.Replace("[Comprador]", txtUsuario.Text);
            //    plantilla = plantilla.Replace("[Clave]", numero.ToString());
            //    if (!string.IsNullOrEmpty(Correo))
            //    {
            //        ClaveEnviada.Visible = true;
            //        FilaOlvideClave.Visible = false;
            //        correo_enviado = correo.EnviarMensaje(Correo, "ProntoFiducia - Clave Olvidada", plantilla, true);
            //    }
            //    else
            //    {
            //        NoExisteUsuario.Visible = true;
            //        FilaOlvideClave.Visible = false;
            //    }
            //}
        }

        private bool EnviarCorreoElectronico(string NombreCompleto, string NombreUsuario, string CorreoElectronico, string Contraseña)
        {
            LogicMail correo = new LogicMail();
            bool correo_enviado = false;
            string plantilla = string.Empty;
            string urlLogoEmail = ConfigurationManager.AppSettings["EmailDomain"].ToString() + ConfigurationManager.AppSettings["EmailHeaderLogo"].ToString();
            plantilla = Resources.BanescoTemplates.EMailTemplateNuevaContraseña.ToString();

            plantilla = plantilla.Replace("[Usuario]", NombreCompleto);
            plantilla = plantilla.Replace("[UserName]", NombreUsuario);
            plantilla = plantilla.Replace("[contrasena]", Contraseña);
            plantilla = plantilla.Replace("[LOGO]", urlLogoEmail);
            plantilla = plantilla.Replace("[URL]", ConfigurationManager.AppSettings["EmailDomain"].ToString());

            correo_enviado = correo.EnviarMensaje(CorreoElectronico, "Nueva Contraseña", plantilla, true);
            return correo_enviado;
        }
    }
}


